#减色算法的实现
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

# 尝试打开图片
face = Image.open('face.png')
im = np.array(face)

def color_quantization(image, num_levels)
    # 计算每个等级的间隔
    step = 256 // num_levels
    # 减色处理：将每个像素值映射到最近的等级
    quantized = (image // step) * step
    return quantized.astype(np.uint8)

# 减色为8级（可修改为其他等级，等级越低颜色越简单）
num_levels = 8
quantized_array = color_quantization(im, num_levels)  # 使用im而不是img_array

# 显示原图和减色后的图
plt.figure(figsize=(10, 5))
plt.subplot(121)
plt.imshow(im)
plt.title('原图')
plt.axis('off')

plt.subplot(122)
plt.imshow(quantized_array)
plt.title(f'减色后（{num_levels}级）')
plt.axis('off')

plt.show()

# 保存结果
quantized_img = Image.fromarray(quantized_array)
quantized_img.save('减色结果.jpg')